<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  

  
  <title>【Git】2、gitignore文件配置规则详解 | 亦人亦码</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="前言：以下内容主要包括gitignore配置文件使用规则">
<meta property="og:type" content="article">
<meta property="og:title" content="【Git】2、gitignore文件配置规则详解">
<meta property="og:url" content="https://xlh_blog.gitee.io/2023/04/06/%E3%80%90Git%E3%80%912%E3%80%81gitignore%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E8%A7%84%E5%88%99%E8%AF%A6%E8%A7%A3/index.html">
<meta property="og:site_name" content="亦人亦码">
<meta property="og:description" content="前言：以下内容主要包括gitignore配置文件使用规则">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2023-04-06T06:52:26.000Z">
<meta property="article:modified_time" content="2023-04-06T07:44:34.550Z">
<meta property="article:author" content="Mr.xi">
<meta property="article:tag" content="Java, PHP,Linux,博客">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/atom.xml" title="亦人亦码" type="application/atom+xml">
  
  
    <link rel="icon" href="/image/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  
<link rel="stylesheet" href="/css/style.css">


<meta name="generator" content="Hexo 5.4.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/" id="logo">亦人亦码</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/">Home</a>
        
          <a class="main-nav-link" href="/archives">Archives</a>
        
          <a class="main-nav-link" href="/about">About</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="搜索"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://xlh_blog.gitee.io"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-【Git】2、gitignore文件配置规则详解" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/2023/04/06/%E3%80%90Git%E3%80%912%E3%80%81gitignore%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E8%A7%84%E5%88%99%E8%AF%A6%E8%A7%A3/" class="article-date">
  <time datetime="2023-04-06T06:52:26.000Z" itemprop="datePublished">2023-04-06</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Git/">Git</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      【Git】2、gitignore文件配置规则详解
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>前言：以下内容主要包括gitignore配置文件使用规则</p>
<span id="more"></span>

<h2 id="1、规则-作用"><a href="#1、规则-作用" class="headerlink" title="1、规则 作用"></a>1、规则 作用</h2><ol>
<li><code>/mtk</code> 过滤整个文件夹</li>
<li><code>*.zip</code> 过滤所有.zip文件</li>
<li><code>/mtk/do.c</code> 过滤某个具体文件</li>
<li><code>!/mtk/one.txt</code>追踪（不过滤）某个具体文件</li>
<li>注意：如果你创建<code>.gitignore</code>文件之前就push了某一文件，那么即使你在<code>.gitignore</code>文件中写入过滤该文件的规则，该规则也不会起作用，git仍然会对该文件进行版本管理。</li>
</ol>
<h2 id="2、配置语法"><a href="#2、配置语法" class="headerlink" title="2、配置语法"></a>2、配置语法</h2><ol>
<li>以斜杠<code>“/”</code>开头表示目录；</li>
<li>以星号<code>“*”</code>通配多个字符；</li>
<li>以问号<code>“?”</code>通配单个字符</li>
<li>以方括号<code>“[]”</code>包含单个字符的匹配列表；</li>
<li>以叹号<code>“!”</code>表示不忽略(跟踪)匹配到的文件或目录。</li>
<li>注意： git 对于<code>.gitignore</code>配置文件是按行从上到下进行规则匹配的</li>
</ol>
<h2 id="3、忽略文件配置的三种方法"><a href="#3、忽略文件配置的三种方法" class="headerlink" title="3、忽略文件配置的三种方法"></a>3、忽略文件配置的三种方法</h2><h3 id="3-1、在Git项目中定义-gitignore-文件"><a href="#3-1、在Git项目中定义-gitignore-文件" class="headerlink" title="3.1、在Git项目中定义 .gitignore 文件"></a>3.1、在Git项目中定义 .gitignore 文件</h3><p>这种方式通过在项目的某个文件夹下定义 .gitignore 文件，在该文件中定义相应的忽略规则，来管理当前文件夹下的文件的Git提交行为。</p>
<p>.gitignore 文件是可以提交到共有仓库中，这就为该项目下的所有开发者都共享一套定义好的忽略规则。</p>
<p>在 .gitingore 文件中，遵循相应的语法，在每一行指定一个忽略规则。如</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">*.log</span><br><span class="line">*.temp</span><br><span class="line">/vendor</span><br></pre></td></tr></table></figure>

<h3 id="3-2、在Git项目的设置中指定排除文件"><a href="#3-2、在Git项目的设置中指定排除文件" class="headerlink" title="3.2、在Git项目的设置中指定排除文件"></a>3.2、在Git项目的设置中指定排除文件</h3><p>这种方式只是临时指定该项目的行为，需要编辑当前项目下的<code>.git/info/exclude</code>文件，然后将需要忽略提交的文件写入其中。</p>
<p>需要注意的是，这种方式指定的忽略文件的根目录是项目根目录。</p>
<h3 id="3-3、定义Git全局的-gitignore-文件"><a href="#3-3、定义Git全局的-gitignore-文件" class="headerlink" title="3.3、定义Git全局的 .gitignore 文件"></a>3.3、定义Git全局的 .gitignore 文件</h3><p>除了可以在项目中定义 .gitignore 文件外，还可以设置全局的 git .gitignore 文件来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的，是属于项目之上Git应用级别的行为。</p>
<p>这种方式也需要创建相应的 .gitignore 文件，可以放在任意位置。然后在使用以下命令配置Git：</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global core.excludesfile ~/.gitignore</span><br></pre></td></tr></table></figure>

<h2 id="4、Git-忽略规则优先级"><a href="#4、Git-忽略规则优先级" class="headerlink" title="4、Git 忽略规则优先级"></a>4、Git 忽略规则优先级</h2><p>在 .gitingore 文件中，每一行指定一个忽略规则，Git 检查忽略规则的时候有多个来源，它的优先级如下（由高到低）：</p>
<p>从命令行中读取可用的忽略规则：</p>
<ol>
<li>当前目录定义的规则</li>
<li>父级目录定义的规则，依次地推</li>
<li><code>$GIT_DIR/info/exclude</code> 文件中定义的规则</li>
<li><code>core.excludesfile</code>中定义的全局规则</li>
</ol>
<h2 id="5、Git-忽略规则匹配语法"><a href="#5、Git-忽略规则匹配语法" class="headerlink" title="5、Git 忽略规则匹配语法"></a>5、Git 忽略规则匹配语法</h2><p>在 .gitignore 文件中，每一行的忽略规则的语法如下：</p>
<ol>
<li>空格不匹配任意文件，可作为分隔符，可用反斜杠转义</li>
<li><code>\#</code>开头的模式标识注释，可以使用反斜杠进行转义</li>
<li><code>!</code> 开头的模式标识否定，该文件将会再次被包含，如果排除了该文件的父级目录，则使用 ! 也不会再次被包含。可以使用反斜杠进行转义</li>
<li><code>/</code> 结束的模式只匹配文件夹以及在该文件夹路径下的内容，但是不匹配该文件</li>
<li><code>/</code> 开始的模式匹配项目跟目录 如果一个模式不包含斜杠，则它匹配相对于当前 .gitignore 文件路径的内容，如果该模式不在 .gitignore 文件中，则相对于项目根目录</li>
<li><code>**</code>匹配多级目录，可在开始，中间，结束</li>
<li><code>?</code>通用匹配单个字符</li>
<li><code>[]</code>通用匹配单个字符列表</li>
</ol>
<h2 id="6、常用匹配示例："><a href="#6、常用匹配示例：" class="headerlink" title="6、常用匹配示例："></a>6、常用匹配示例：</h2><ol>
<li><code>bin/</code>:忽略当前路径下的bin文件夹，该文件夹下的所有内容都会被忽略，不忽略 bin 文件</li>
<li><code>/bin</code>:忽略根目录下的bin文件</li>
<li><code>/*.c</code>: 忽略 cat.c，不忽略 <code>build/cat.c</code></li>
<li><code>debug/*.obj</code>: 忽略 <code>debug/io.obj</code>，不忽略<code>debug/common/io.obj</code> 和 <code>tools/debug/io.obj</code></li>
<li><code>**/foo</code>: 忽略<code>/foo, a/foo, a/b/foo</code>等</li>
<li><code>a/**/b</code>: 忽略<code>a/b, a/x/b, a/x/y/b</code>等</li>
<li><code>!/bin/run.sh</code>: 不忽略 bin 目录下的 run.sh 文件</li>
<li><code>*.log</code>: 忽略所有 .log 文件</li>
<li><code>config.php</code>: 忽略当前路径的 config.php 文件</li>
</ol>
<h1 id="7、配置示例"><a href="#7、配置示例" class="headerlink" title="7、配置示例"></a>7、配置示例</h1><p>目前在代码中使用的配置文件：</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">**/.DS_Store</span><br><span class="line">**/.idea</span><br><span class="line">**/*.iml</span><br><span class="line">.svn</span><br><span class="line">**/target</span><br><span class="line">app</span><br><span class="line">logs</span><br></pre></td></tr></table></figure>


      
    </div>
    <footer class="article-footer">
      <a data-url="https://xlh_blog.gitee.io/2023/04/06/%E3%80%90Git%E3%80%912%E3%80%81gitignore%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E8%A7%84%E5%88%99%E8%AF%A6%E8%A7%A3/" data-id="clt2kwbid000as33717w09rql" class="article-share-link">Share</a>
      
      
    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/2023/04/06/%E3%80%90Git%E3%80%913%E3%80%81%E8%AE%A9-Git-%E5%85%A8%E5%B1%80%E6%80%A7%E7%9A%84%E5%BF%BD%E7%95%A5-DS-Store/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          【Git】3、让 Git 全局性的忽略 .DS_Store
        
      </div>
    </a>
  
  
    <a href="/2023/04/06/%E3%80%90Git%E3%80%911%E3%80%81Git%E6%93%8D%E4%BD%9C%E8%BF%9C%E7%A8%8B%E6%8C%87%E5%AE%9A%E5%88%86%E6%94%AF%E5%88%B0%E6%9C%AC%E5%9C%B0%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Older</strong>
      <div class="article-nav-title">【Git】1、Git操作远程指定分支到本地的三种方式</div>
    </a>
  
</nav>

  
</article>




</section>
        
          <aside id="sidebar">
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">分类</h3>
    <div class="widget">
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/Activiti7/">Activiti7</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/Git/">Git</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%B6%E4%BB%96/">其他</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%90%8E%E7%AB%AF/">后端</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BF%90%E7%BB%B4/">运维</a></li></ul>
    </div>
  </div>


  
    

  
    
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">归档</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2023/04/">四月 2023</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">最新文章</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/2023/04/10/%E3%80%90%E5%85%B6%E4%BB%96%E3%80%911%E3%80%81Mac%E9%83%A8%E7%BD%B2LskyPro%E6%90%AD%E5%BB%BA%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/">【其他】1、Mac部署LskyPro搭建本地图床</a>
          </li>
        
          <li>
            <a href="/2023/04/06/%E3%80%90%E8%BF%90%E7%BB%B4%E3%80%917%E3%80%81%E8%A7%A3%E5%86%B3virtualBox%E5%AF%BC%E5%85%A5voa%E6%96%87%E4%BB%B6%E5%90%8E%E6%97%A0%E6%B3%95%E4%B8%8A%E7%BD%91%E9%97%AE%E9%A2%98/">【运维】7、解决virtualBox导入voa文件后无法上网问题</a>
          </li>
        
          <li>
            <a href="/2023/04/06/%E3%80%90%E8%BF%90%E7%BB%B4%E3%80%916%E3%80%81Docker%E8%BF%90%E8%A1%8CSpringCloud%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%B9%B6%E9%80%9A%E8%BF%87IP%E8%BF%9B%E8%A1%8C%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C/">【运维】5、Docker运行SpringCloud微服务并通过IP进行服务注册</a>
          </li>
        
          <li>
            <a href="/2023/04/06/%E3%80%90%E8%BF%90%E7%BB%B4%E3%80%915%E3%80%81win10%E9%80%9A%E8%BF%87vagrant-virtulbox%E6%90%AD%E5%BB%BAcentos7%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%8E%AF%E5%A2%83%E6%97%B6%E6%8A%A5%E9%94%99/">【运维】5、win10通过vagrant+virtulbox搭建centos7虚拟机环境时报错</a>
          </li>
        
          <li>
            <a href="/2023/04/06/%E3%80%90%E5%90%8E%E7%AB%AF%E3%80%91SpringBoot%E6%95%B4%E5%90%88MQTT%EF%BC%88EMQX%EF%BC%89/">【后端】SpringBoot整合MQTT（EMQX）</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2024 Mr.xi<br>
        <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
        <span id="busuanzi_container_site_pv">
          本文总阅读量<span id="busuanzi_value_page_pv"></span>次
        </span><a href="https://beian.miit.gov.cn/" target="_blank">京ICP备18049089号-2</a>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>


</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/" class="mobile-nav-link">Home</a>
  
    <a href="/archives" class="mobile-nav-link">Archives</a>
  
    <a href="/about" class="mobile-nav-link">About</a>
  
</nav>
    

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>


  
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css">

  
<script src="/fancybox/jquery.fancybox.pack.js"></script>




<script src="/js/script.js"></script>





<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?803c71743b7cfc4dac421ac4fc646963";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>



  </div>
</body>
</html>